"""
@Project ：Python_Learning 
@File    ：对对碰2.0.py
@IDE     ：PyCharm 
@Author  ：zhupp
@Date    ：2024/11/20 22:37 
"""

import random

color_list = ['green', 'red', 'purple', 'yellow', 'blue', 'white', 'black', 'brown', 'pink']
# 最初手上的颜色
init_have = [color_list[random.randint(0, len(color_list)-1)] for i in range(22)]
print('最初手上的颜色：', init_have)
# 当前手上的颜色
cur_have = init_have
# 最后手上的颜色
total_have = []
hope_color = input("请输入许愿色：")


recount = 0
cur_have_new = []
while True:
    # 检查许愿色在不在当前手上的颜色中
    while hope_color in cur_have:
        total_have.append(hope_color)
        cur_have.remove(hope_color)
        cur_have.append(color_list[random.randint(0, 5)])

    for color in color_list:
        # 判断手上的颜色是否为单数
        if cur_have.count(color) % 2 == 1:
            cur_have_new.append(color)
            for cur in cur_have:
                if cur == color:
                    cur_have.remove(color)
        total_have.extend(cur_have)    # 将碰掉的颜色加到total中
        recount = len(cur_have) // 2   # 重新抽取牌的次数
         # 重新抽牌
        for _ in range(recount):
            cur_have_new.append(color_list[random.randint(0, 5)])
        cur_have = cur_have_new        # 将没有碰掉的手牌加入到当前手牌中
        cur_have_new = []

    # 如果手牌没有相同的则退出
    if list(set(cur_have)) == cur_have and hope_color not in cur_have:
        # 将手牌加入到total中
        total_have.extend(cur_have)
        break

count = 0
for i in range(len(total_have)):
    count += 1
    print(f'{total_have[i]}', end=' ')
    if count % 10 == 0:
        print(end='\n')
print(f'一共{len(total_have)}包')